import { createApp, ComponentPublicInstance } from 'vue';
import App from './App.vue';
import router from './router';
import ElementPlus from 'element-plus';
import 'element-plus/dist/index.css';
import * as ElementPlusIconsVue from '@element-plus/icons-vue';
import './styles.css';
import { createPinia } from 'pinia'; // 保留组长的Pinia状态管理

const app = createApp(App);

// 插件安装（顺序建议：UI库 → 状态管理 → 路由）
app.use(ElementPlus);
app.use(createPinia()); // 新增Pinia
app.use(router);

// 注册所有图标（合并双方相同的逻辑）
for (const [key, component] of Object.entries(ElementPlusIconsVue)) {
  app.component(key, component);
}

// 增强版错误处理（合并双方优点）
app.config.errorHandler = (
  err: unknown,
  vm: ComponentPublicInstance | null,
  info: string
) => {
  console.error('[全局错误]', err, info);
  if (vm?.$options) { // 安全访问
    console.error('发生错误的组件:', vm.$options.name);
  }
  // 可在此添加错误上报逻辑
};

// 保留你的全局过滤器（组长版本没有）
app.config.globalProperties.$filters = {
  formatCurrency(value: number) {
    return `¥${value.toLocaleString('zh-CN')}`;
  }
};

app.mount('#app');

// 开发环境调试（保留你的实现）
if (import.meta.env.DEV) {
  window.__VUE_APP__ = app;
}